package smartgrid.agents.provider;

public interface IProviderAgent {
	
	/**
	 * Get provider identification
	 * 
	 * @param none
	 * @return Provider identification
	 */
	public int getId();
	
	
	/**
	 * Initialize the simulation timestep
	 * 
	 * @param timestep
	 *          Number of the simulation timestep
	 * @return none
	 */
	public void initTimestep(int timestep);
	
	
	/**
	 * Provider purchase energy from Prosumer
	 * 
	 * @param prosumerId
	 *          Prosumer identification
	 * @param qtyEnergy
	 *          Quantity of energy to purchase in kWh
	 * @return Total price paid for the energy bought
	 */
	public double sellEnergy(int prosumerId, double qtyEnergy);
	
	
	/**
	 * Provider sell energy to Prosumer
	 * 
	 * @param prosumerId
	 *          Prosumer identification
	 * @param qtyEnergy
	 *          Quantity of energy to sell in kWh
	 * @return Total price paid by the Prosumer
	 */
	public double buyEnergy(int prosumerId, double qtyEnergy);
	
	
	/**
	 * Get a Provider's output record
	 * 
	 * @param none
	 * @return Provider output record
	 */
	public void generateOutput();
}